|
Topics
TickCount
vs. Ticks
, August
1998SetApplLimit
, October
1994NewPtr
Description, October
1994'sysz'
Resources and System
Extensions, August 1998PtrToHand
description, August
1998PtrToHand
,
PtrToXHand
, and PtrAndHand
, August
1998HandToHand
description, August
1998HandAndHand
warning no longer needed, August
1998PtrAndHand
Assembly-Language
Information, August 1998StackSpace
Special Considerations,
August 1998MemError
Warning, August 1998MyGrowZone
and
MyPurgeProc
Special Considerations, August 1998LockMemoryContiguous
Description,
October 1994DebuggerGetMax
Description, October
1994DebuggerLockMemory
Description,
October 1994DebuggerUnlockMemory
Description,
October 1994
Inside Macintosh:Memory doesn't apply to 64K ROM
Macintoshes
Page xi
This note should be added to the introduction: The intent of Inside Macintosh:Memory is to cover all Macintosh models existing or foreseeable at time of print, except for a few early models with the 64K ROMs, which are no longer supported:
Inside Macintosh:Memory does apply to the Macintosh 512K enhanced (featuring the same 128K ROM as the Macintosh Plus) and all Macintoshes at time of print, including Performa, PowerBook, Power Macintosh, and Mac OS-compatible PowerPC machines. |
TickCount
vs. Ticks
Pages 1-6 and 2-7
This is a bad example. A better example is
The paragraph on page 1-6 should read: In general, it is best to avoid reading or writing
low-memory system global variables. Most of these variables
are undocumented, and the results of changing their values
can be unpredictable. Usually, when the value of a
low-memory global variable is likely to be useful to
applications, the system software provides a routine that
you can use to read or write that value. For example, you
can get the current value of the The paragraph on page 2-7 should read: Even when Inside Macintosh does document a
particular system global variable, you should use any
available routines to access that variable's value instead
of examining it directly. For example, you should use the
|
Correction to Description of Figure 1-7
Page 1-14
The description of Figure 1-7 is incorrect. The paragraph immediately following Figure 1-7 should read: "In Figure 1-7, Application 2 has almost exhausted its application heap. As a result, it has requested and received a large block of temporary memory. Application 2 can use the temporary memory in whatever manner it desires." |
Correction to Documented Default Stack Sizes
Pages 1-39 through 1-40, Changing the Size of the Stack
The documentation states that by default the stack can grow to "32KB on computers with Color QuickDraw" (page 1-40). The actual default stack size on machines with Color QuickDraw is 24KB. In addition, the default stack size for a background-only application (or a "faceless background process") is 2KB, not 8KB as claimed on page 1-40. However, the default stack size may change in the future and should never be assumed. |
Addendum to Description of SetApplLimit
Pages 1-39, 1-52, and 2-84.
The description of the |
Correction to Return Value Type
Page 1-45, Allocating Blocks of Memory
The application-defined function
|
Correction to NewPtr
Description
Pages 1-58 through 1-59, and 2-36.
The Assembly-Language Information for the
|
Addition to SetCurrentA5
Description
Pages 1-79 and 1-81
There is a problem introduced with MultiFinder. It is well documented in Technote ME14-The New Memory Manager and You, under A5 World Problems and Heap Callback Procedures (but the workaround suggested in this technote is unusable). The problem: when a heap is low on memory or a
The safe workaround, which is needed only in 680x0 code,
involves saving |
Correction to Temporary Memory Locking Requirement
Page 2-10, Extending an Application's Memory
The phrase:
[...] you must never lock temporary memory across calls to |
should read:
[...] you should avoid locking temporary memory across calls to |
See Q&A ME08-Temporary Memory for details.
Correction to Listing for Checking for Temporary Memory
Routines
Page 2-12
Listing 2-3 on page 2-12 contains an error. The line:
TempMemCallsAvailable := BAND(myRsp, gestaltTempMemSupport) <> 0; |
should be replaced by the line:
TempMemCallsAvailable := BTst(myRsp, gestaltTempMemSupport); |
Clarification of 'sysz'
Resources and System
Extensions
Page 2-13, Allocating Memory at Startup Time
The documentation implies (page 2-13) that system
extensions running under System 7.0 and later do not need to
have ' |
Furthermore, the generic term "system extension" is
ambiguous in this context. Many items in the Extensions
folder, such as components and native drivers
( |
Before executing an |
Note that in System 7.0 and later, the system heap can
grow after the startup process has completed. The
|
Clarification of Block Alignment Boundaries
Page 2-22, Block Headers
The documentation states that "on computers containing the MC68020, MC68030, or MC68040 microprocessors, blocks are padded to 4-byte boundaries." This is incorrect for 68040 and PowerPC machines, where blocks are always aligned on 16-byte boundaries. Starting with Mac OS 7.5, all memory blocks, regardless of the runtime CPU, are aligned to 16-byte boundaries. |
Clarification of Block Header Diagrams
Pages 2-22 through 2-23, Block Headers
Figures 2-1 (page 2-22) and 2-2 (page 2-23) might be misleading. Remember that Inside Macintosh typically draws memory diagrams with the low-memory addresses nearest to the bottom of the diagram. (Compare Figure 1-1 on page 1-5, where the low-memory end of the diagram is explicitly labeled.) The long word containing the block type and size correction is the first long word in the 24-bit zone header header. Similarly, the long word containing the block type and unused space is the first long word in the 32-bit zone header. |
Figure 2-2 (page 2-23) claims that a block type of "11" signifies a relocatable block. This is incorrect. The correct type indicator for a relocatable block is "10". |
Clarification to PtrToHand
Description
Page 2-61
The |
Correction to HandToHand
description
Page 2-63
The statement: "The new relocatable block is created in the same heap zone as the original block (which might not be the current heap zone)." is incorrect. The correct description is that the new relocatable block
is created in the current heap zone, regardless of the zone
of the original relocatable block. During
|
HandAndHand
warning no longer needed
Page 2-64
The warning is no longer needed and only applied to Macs which use the original 64K ROMs. It is safe to call |
Correction to PtrAndHand
Assembly-Language
Information
Page 2-65
The description for A1's value should read "Handle to relocatable block to which the data will be appended." size, the "Number of bytes to append", is passed in |
Calling conventions for PtrToHand
,
PtrToXHand
, and PtrAndHand
Page 2-66
Before Assessing Memory Conditions, there should be this note: In the description of |
Addendum to StackSpace
Special
Considerations
Page 2-70
You should not call |
Addendum to MemError
Warning
Page 2-70
In 680x0 code, calling a function in an unloaded segment
will zero |
Addition to MyGrowZone
and
MyPurgeProc
Special Considerations
Page 2-90 and 2-91
There is a problem introduced with MultiFinder. It is
well documented in Technote ME14-The
New Memory Manager and You, under The problem: when a heap is low on memory or a
The safe workaround, which is needed only in 680x0 code,
involves saving |
Correction to LockMemoryContiguous
Description
Pages 3-29 through 3-30
The Assembly-Language Information for the
|
Correction to DebuggerGetMax
Description
Page 3-34
The description of |
Correction to DebuggerLockMemory
Description
Page 3-37
The Assembly-Language Information for the
|
Correction to DebuggerUnlockMemory
Description
Page 3-38
The Assembly-Language Information for the
|
Finding QuickDraw globals
Page 4-18
The sentence: "However, the should read: "However, the |
Further Reference: